import { Duplex, Transform } from 'stream';
class MyDuplex extends Duplex {
    _write(chunk, encoding, callback) {
        console.log(chunk);
        callback();
    }
    _read() {
        this.push('abc')
        this.push(null); // push null之后会触发end事件 
    }
}
const dplex = new MyDuplex();
dplex.on('data', function (chunk) {
    console.log(chunk)
})
dplex.write('ok')



class MyTransform extends Transform {
    _transform(chunk, encoding, callback) {
        console.log(chunk, 22)
        this.push(chunk.toString().toUpperCase())
    }
}
const myTrans = new MyTransform();

myTrans.write('ok')

myTrans.on('data', function (chunk) {
    console.log(chunk.toString())
})

// 可读流： 只能读取的流 on('data') on('end');
// 可写流： 能写的流  write()  end()
// 双工 ：以上都具备的  读和写可以无关
// 转化流： 写转成读 读写之间有关系  压缩 加密

